package com.openess.bigsearch.engine.analyzer;

import com.openess.bigsearch.engine.BPlusTree.BPlusTree.BTree_node;
import com.openess.bigsearch.engine.index.Token;

/**
 * 分词解析器的接口
 * 
 * @author TuTu
 * 
 */
public interface Analyzer {
	/**
	 * 依据BPlusTree设置分词的长度，对超过长度的进行截取
	 */
	public static final int TERMLENGTH = BTree_node.STRSIZE;

	/**
	 * 对给定的字符串进行解析切分成特定样式的单词，且每次调用parse都在offset参数的基础上统计偏移位置，
	 * 意味着具有多个域的文档，依靠传入的offset参数，来分辨属于不同域的分词位置信息。
	 * 
	 * @param offset
	 *            起始位置，即在返回每个分词的时候，其位置信息都需要加上offset，而不是从0位置开始
	 * @param str
	 *            待被解析的字符串
	 * @return 正常情况下返回(term,
	 *         offset)对，offset代表字符位置(以字符为单位)。如果没有进行分词解析或有什么错误，那么返回null
	 */
	Token<String, Integer>[] parse(int offset, String str);
}
